#include "pch.h"
#include "Random.hpp"

#undef min
#undef max




RandomCache::RandomCache(int min, int max)
	: m_rng(clock())
	, m_distribution(min, max)
	, m_die(m_rng, m_distribution)
{}
///////////////////////////////////////////////////////////////////////////////////////////////////




RandomCache::Cache RandomCache::values(std::size_t count)
{
	if(count >= m_cache.size())
		insert(count - m_cache.size());

	Cache::iterator end = m_cache.begin();
	std::advance(end, count);

	Cache ret(m_cache.begin(), end);
	return ret;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void RandomCache::insert(std::size_t number)
{
	m_cache.reserve(m_cache.size() + number);
	for(std::size_t i = 0; i < number; ++i)
	{
		m_cache.push_back(m_die());
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
